
package com.crowdfunding.circle.data.entity;

import java.math.BigDecimal;
import java.util.Date;

import org.apache.commons.lang3.StringUtils;

/**
 * 平台数据实体类
 *
 * @author 朱国军
 * @version 2016年06月26日 朱国军
 */
public class ProjectDataVO {

    /** 平台数据ID */
    private String projectDataId;

    /** 项目名称 */
    private String projectName;

    /** 平台名称 */
    private String platformName;

    /** 平台类型 */
    private Integer platformType;
    
    /** 平台类型名称 */
    private Integer platformTypeName;

    /** 募资金额 */
    private BigDecimal raisedAmount;

    /** 累计分红 */
    private BigDecimal totalDividend;

    /** 项目运营时间(月) */
    private Long operationTime;

    /** 年化分红比例(X100) */
    private BigDecimal dividendRatio;

    /** 募集后估值 */
    private BigDecimal valuationAfterRaised;

    /** 下一轮融资估值 */
    private BigDecimal nextValuation;

    /** 升值比例(X100) */
    private BigDecimal appreciationRatio;

    /** 下轮融资类型 */
    private Integer valuationType;

    /** 发布人 */
    private String publishUser;

    /** 创建时间 */
    private Date createTime;

    /** 更新时间 */
    private Date updateTime;

    /** 状态：0默认，1管理员删除，2用户删除 */
    private Integer dataStatus;

    /**
     * 设置平台数据ID
     *
     * @param projectDataId 平台数据ID
     */
    public void setProjectDataId(String projectDataId) {
        this.projectDataId = projectDataId;
    }

    /**
     * 获取平台数据ID
     *
     * @return 平台数据ID
     */
    public String getProjectDataId() {
        return projectDataId;
    }

    /**
     * 设置项目名称
     *
     * @param projectName 项目名称
     */
    public void setProjectName(String projectName) {
        this.projectName = projectName;
    }

    /**
     * 获取项目名称
     *
     * @return 项目名称
     */
    public String getProjectName() {
        return projectName;
    }

    /**
     * 设置平台名称
     *
     * @param platformName 平台名称
     */
    public void setPlatformName(String platformName) {
        this.platformName = platformName;
    }

    /**
     * 获取平台名称
     *
     * @return 平台名称
     */
    public String getPlatformName() {
        return platformName;
    }

    /**
     * 设置平台类型
     *
     * @param platformType 平台类型
     */
    public void setPlatformType(Integer platformType) {
        this.platformType = platformType;
    }

    /**
     * 获取平台类型
     *
     * @return 平台类型
     */
    public Integer getPlatformType() {
        return platformType;
    }

    /**
     * 设置募资金额
     *
     * @param raisedAmount 募资金额
     */
    public void setRaisedAmount(BigDecimal raisedAmount) {
        this.raisedAmount = raisedAmount;
    }

    /**
     * 获取募资金额
     *
     * @return 募资金额
     */
    public BigDecimal getRaisedAmount() {
        return raisedAmount;
    }

    /**
     * 设置累计分红
     *
     * @param totalDividend 累计分红
     */
    public void setTotalDividend(BigDecimal totalDividend) {
        this.totalDividend = totalDividend;
    }

    /**
     * 获取累计分红
     *
     * @return 累计分红
     */
    public BigDecimal getTotalDividend() {
        return totalDividend;
    }

    /**
     * 设置项目运营时间(月)
     *
     * @param operationTime 项目运营时间(月)
     */
    public void setOperationTime(Long operationTime) {
        this.operationTime = operationTime;
    }

    /**
     * 获取项目运营时间(月)
     *
     * @return 项目运营时间(月)
     */
    public Long getOperationTime() {
        return operationTime;
    }

    /**
     * 设置年化分红比例(X100)
     *
     * @param dividendRatio 年化分红比例(X100)
     */
    public void setDividendRatio(BigDecimal dividendRatio) {
        this.dividendRatio = dividendRatio;
    }

    /**
     * 获取年化分红比例(X100)
     *
     * @return 年化分红比例(X100)
     */
    public BigDecimal getDividendRatio() {
        return dividendRatio;
    }

    /**
     * 设置募集后估值
     *
     * @param valuationAfterRaised 募集后估值
     */
    public void setValuationAfterRaised(BigDecimal valuationAfterRaised) {
        this.valuationAfterRaised = valuationAfterRaised;
    }

    /**
     * 获取募集后估值
     *
     * @return 募集后估值
     */
    public BigDecimal getValuationAfterRaised() {
        return valuationAfterRaised;
    }

    /**
     * 设置下一轮融资估值
     *
     * @param nextValuation 下一轮融资估值
     */
    public void setNextValuation(BigDecimal nextValuation) {
        this.nextValuation = nextValuation;
    }

    /**
     * 获取下一轮融资估值
     *
     * @return 下一轮融资估值
     */
    public BigDecimal getNextValuation() {
        return nextValuation;
    }

    /**
     * 设置升值比例(X100)
     *
     * @param appreciationRatio 升值比例(X100)
     */
    public void setAppreciationRatio(BigDecimal appreciationRatio) {
        this.appreciationRatio = appreciationRatio;
    }

    /**
     * 获取升值比例(X100)
     *
     * @return 升值比例(X100)
     */
    public BigDecimal getAppreciationRatio() {
        return appreciationRatio;
    }

    /**
     * 获取下轮融资类型
     *
     * @return 下轮融资类型
     */
    public Integer getValuationType() {
        return valuationType;
    }

    /**
     * 设置下轮融资类型
     *
     * @param valuationType 下轮融资类型
     */
    public void setValuationType(Integer valuationType) {
        this.valuationType = valuationType;
    }

    /**
     * 设置发布人
     *
     * @param publishUser 发布人
     */
    public void setPublishUser(String publishUser) {
        this.publishUser = publishUser;
    }

    /**
     * 获取发布人
     *
     * @return 发布人
     */
    public String getPublishUser() {
        return publishUser;
    }

    /**
     * 设置创建时间
     *
     * @param createTime 创建时间
     */
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    /**
     * 获取创建时间
     *
     * @return 创建时间
     */
    public Date getCreateTime() {
        return createTime;
    }

    /**
     * 设置更新时间
     *
     * @param updateTime 更新时间
     */
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    /**
     * 获取更新时间
     *
     * @return 更新时间
     */
    public Date getUpdateTime() {
        return updateTime;
    }

    /**
     * 设置状态：0默认，1管理员删除，2用户删除
     *
     * @param dataStatus 状态：0默认，1管理员删除，2用户删除
     */
    public void setDataStatus(Integer dataStatus) {
        this.dataStatus = dataStatus;
    }

    /**
     * 获取状态：0默认，1管理员删除，2用户删除
     *
     * @return 状态：0默认，1管理员删除，2用户删除
     */
    public Integer getDataStatus() {
        return dataStatus;
    }
    
    /**
     * 获取平台类型名称
     *
     * @return 平台类型名称
     */
    public Integer getPlatformTypeName() {
        return platformTypeName;
    }
    
    /**
     * 设置平台类型名称
     *
     * @param platformTypeName 平台类型名称
     */
    public void setPlatformTypeName(Integer platformTypeName) {
        this.platformTypeName = platformTypeName;
    }
    
    /**
     * 检查字段长度是否超长，检查非空字段是否有值
     *
     * @return 检查提示信息，为null时表示检查通过
     */
    public String valid() {

        if (StringUtils.isNotBlank(projectName) && projectName.length() > 100) {
            return "项目名称值超长，允许输入的最大长度为：100字符";
        }

        if (StringUtils.isNotBlank(platformName) && platformName.length() > 100) {
            return "平台名称值超长，允许输入的最大长度为：100字符";
        }

        if (StringUtils.isBlank(projectName)) {
            return "项目名称不能为空";
        }

        if (StringUtils.isBlank(platformName)) {
            return "平台名称不能为空";
        }
        if (platformType == null) {
            return "平台类型不能为空";
        }

        return null;
    }
}
